package com.richstonedt.smartcity.xaytsccommoncs.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.obs.services.model.ObsObject;
import com.richstonedt.smartcity.xaytsccommonms.model.FileStorage;
import com.richstonedt.smartcity.xaytsccommonms.params.BatchUrlQueryParams;
import com.richstonedt.smartcity.xaytsccommonms.params.BatchUrlQueryPerfectParams;
import com.richstonedt.smartcity.xaytsccommonms.params.FileUploadParams;
import com.richstonedt.smartcity.xaytsccommonms.params.ObsFileCommonParams;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * <b><code>FileStorageService</code></b>
 * <p/>
 * Description  通用-文件表 服务类
 * <p/>
 * <b>Creation Time:</b> 2022/3/29 15:56:45
 *
 * @author tangjiahuan
 * @since xaytsc-common-be
 */
public interface FileStorageService extends IService<FileStorage> {

    /**
     * 文件批量上传
     * @param params 文件上传参数
     * @return 上传成功文件对象
     */
    List<FileStorage> upload(FileUploadParams params);


    /**
     * 文件批量删除
     * @param bucketName 桶名
     * @param objectKeys 对象key
     * @param baseUrl 文件所在桶内路径
     * @return 删除成功的对象
     */
    List<String> deleteBatchFiles(String bucketName,String baseUrl,List<String> objectKeys);

    /**
     * 文件删除
     * @param params obs文件操作通用参数
     * @return 是否删除成功
     */
    Boolean deleteFile(ObsFileCommonParams params);

    /**
     * 文件下载
     * @param params obs文件操作通用参数
     * @param response  HttpServletResponse
     */
    void downloadObject(ObsFileCommonParams params,HttpServletResponse response);

    /**
     * 返回临时访问授权url
     * @param params obs文件操作通用参数
     * @return 临时访问授权url
     */
    String getTemporarySignatureUrl(ObsFileCommonParams params);

    /**
     * 批量获取临时访问授权URL
     * @param params 批量获取临时访问授权URL查询实体
     * @return  map
     */
    Map<String,String> batchTemporarySignatureUrlPerfect(BatchUrlQueryPerfectParams params);

    /**
     * 批量获取临时访问授权URL
     * @param params 批量获取临时访问授权URL查询实体
     * @return  map
     */
    Map<String,String> batchTemporarySignatureUrl(BatchUrlQueryParams params);


}
